﻿
# python3 脚本程序：清理Bilibili缓存文件下载目录中的音视频文件

import os
import shutil
import json
import re

src_dir = "F:\\Bilibili-tmp\\" # 待扫描Bilibili缓存文件下载目录，提取将手机/Android/data/tv.danmaku.bili/download下的所有目录复制到这个目录下

# 提取json文件中的owner_name和title字段值
def extract_owner_and_title(entry_json_path):
    with open(entry_json_path, 'r', encoding='utf-8') as json_file:
        data = json.load(json_file)
        owner_name = data.get('owner_name', '')
        title = data.get('title', '')
        type_tag = data.get('type_tag', '')
        return owner_name, title, type_tag

# 扫描所有目录且合并video.m4s和audio.m4s为mp4文件
def clean_src(src_dir):
    if not os.path.isdir(src_dir):
        print('src_dir invalid')
        return 1
    src_dir = os.path.realpath(src_dir)
    root_level = len(src_dir.split(os.sep))
    for root, dirs, files in os.walk(src_dir):
        if len(root.split(os.sep)) - root_level == 2:
            entry_json_path = os.path.join(root, 'entry.json')
            if os.path.exists(entry_json_path):
                owner_name, title, type_tag = extract_owner_and_title(entry_json_path)
                video_m4s_dir = os.path.join(root, type_tag)
                # os.removedirs(video_m4s_dir)
                shutil.rmtree(video_m4s_dir)
                # os.remove(entry_json_path)
    return 0

clean_src(src_dir)
print('源文件清除完成')
